from algo.sort.heap import Heap


class MaxFreqStack(Heap):
    # ref: https://www.bilibili.com/video/BV1nF411y7rD/?spm_id_from=333.788.recommend_more_video.-1&vd_source=ad559e41b561d48861f70d0187e51e02
    # 00:59:32
    # 不一样的想法,heap_insert的时候把相同的调整到最上边,但是不行如果栈顶的词频跟他的左右子树的词频是一样的,
    # 需要再加一个变量index表示他被加入的序列,同时用频率和index做比较,用大根堆就可以得到,但是push,pop时间复杂度是O(log(N)),
    # 而不是O(1),所以视频讲解的方法目前为止是最佳
    def __init__(self):
        super(MaxFreqStack, self).__init__()

    def push(self, val):
        ...

    def pop(self):
        ...
